#ifndef _ble_data_handle_h_
#define _ble_data_handle_h_

/*
    指令规则

    包头    +   指令码  +   数据长度（1byte）   +   数据    +   校验和   
*/
#define BLE_CMD_DATA_MAX_LEN 256 //接收缓存长度

/*
    包头
*/
#define BLE_CMD_PACK_HEAD 0x5772
/*
    指令码
*/
#define BLE_CMD_SEND_FIRMWARE_DATA 0x01 //固件数据指令
#define BLE_CMD_FIRWART_INFO 0x02       //固件信息
#define BLE_CMD_FIRWART_SUM_RET 0x03    //固件校验结果

/*
    指令结构

        BLE_CMD_SEND_FIRMWARE_DATA（小程序发起）
                        命令    固件数据包偏移位置（4字节）固件包数据（128字节）
                        应答    写入结果（1成功，0失败）

        BLE_CMD_FIRWART_INFO（小程序发起）
                        命令    固件总长度（4字节）固件校验信息（2字节）
                        应答    写入结果（1成功，0失败）

        BLE_CMD_FIRWART_SUM_RET（小程序发起）
                        命令    
                        应答    校验结果（1成功，0失败）
        

*/

/*
    ble数据日志输出定义
*/
#define BLE_RX 1
#define BLE_TX 2

/*
    ssid信息数据最大长度
*/
#define SSID_INFO_DATA_LEN 15

/*
    函数功能：打印输出接收ble数据
    函数名称：ble_data_log
    输入：typed                 BLE_RX/BLE_TX
    输入：data                  ble数据
    输入：len                   数据长度
*/
void ble_data_log(unsigned char typed, unsigned char *data, unsigned short len);
/*
    函数功能：接收ble数据
    函数名称：ble_com_get
    输入：data                  ble数据
    输入：len                   数据长度
*/
void ble_com_get(unsigned char *data, unsigned short len);
/*
    函数功能：应答ble命令
    函数名称：ble_ack
    输入：cmd                   指令码
    输入：data                  数据
    输入：len                   数据长度
*/
void ble_ack(unsigned char cmd, unsigned char *data, unsigned char len);

typedef struct
{
    int len;
    uint8_t data[BLE_CMD_DATA_MAX_LEN];
} ble_data_t;

#endif
